var obj = {
  name: "why",
  age: 18
}

var info = Object.create(obj, {
  address: {
    value: '北京市',
    enumerable: true
  }
})

// 此时 info => { address: '北京市' }, info.__proto => { name: 'why', age: 18 }

// object.hasOwnProperty() 判断属性是否在当前对象中
console.log(info.hasOwnProperty('address')) // true
console.log(info.hasOwnProperty('name')) // false
console.log('-----------------')

// in 操作符：判断属性是否在当前对象或者其原型链中 (与 for in 遍历对象一致)
console.log('address' in info) // true
console.log('name' in info) // true
console.log('-----------------')

// instanceof 用于检测构造函数的 pototype 是否出现在某个实例对象的原型链上
function Person() {}
var p = new Person()
console.log(p instanceof Person) // true
console.log('-----------------')


// isPrototypeOf 用于检测某个对象是否出现在某个实例对象的原型链上
console.log(obj.isPrototypeOf(info)) // true
console.log(obj instanceof info) // TypeError
console.log('-----------------')